<?
/* Se asegura que el archivo es incluido por el index */
	defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Organizacion_persona_exe( $this );

	class Organizacion_persona_exe extends Exe
	{
	function Organizacion_persona_exe( &$oModule )
		{
			$this->Exe( $oModule );
		}
	  function save()
		{
				$oForm = $this->oModule->loadClass( 'Organizacion_persona_frm' );
				if ( $oForm->aFields['ncOrganizacion']->getValue() )
				{
					if ( $oForm->aFields['cNombre']->getValue() && $oForm->aFields['cApellido']->getValue() ) 
					{
						return $this->insert();
					}
					if ( $oForm->aFields['ncPersona']->getValue()  ) 
					{
						$nqExiste = $this->oDatabase->getData("SELECT count(*) FROM atOrganizacionPersona WHERE ncOrganizacion = " .  $oForm->aFields['ncOrganizacion']->getValue()  . " AND ncPersona = " .  $oForm->aFields['ncPersona']->getValue() );
						if ( $nqExiste == 0 ) 	
							return $this->insert();
						else	
							return $this->update();
					}
				} 
		}

	// MODIFICAR_EL_CARGO_DE_UNA_PERSONA
	function update()
		{
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'Organizacion_persona_frm' );
			extract( $oForm->getFieldArray() );

			// Modifica el Registro
			$this->oDatabase->update("atOrganizacionPersona",
								"ncVisibilidad", $ncVisibilidad,
								"ncGrupo", obtenerMiGrupo(),
								"ncDomicilio", $ncDomicilio,
								"ncActividad", $ncActividad,
								"cCargo", $cCargo,
								"ncArea", $ncArea,
								"cInterno", $cInterno,
								"cOficina", $cPiso . "|" . $cDepto,
								"cCelular", $cCelular,
								"cDirecto", $cDirecto,
								"WHERE",
								"ncPersona", $ncPersona,
								"ncOrganizacion", $ncOrganizacion );

			$bOk = $this->oDatabase->insert("atPersonaDomicilio",
								"ncDomicilio", $ncDomicilio,
								"ncTipoDomicilio", DOMICILIO_LABORAL,
								"bLectura", 1,
								"dDesde", Date("Y-m-d"),
								"ncPersona", $ncPersona );

			$oExe = $this->oModule->loadClass( 'Email_exe' );
			$oExe->update();
		}
	// AGREGAR_UNA_PERSONA_A_UNA_ORGANIZACION
	// AGREGAR_UNA_ORGANIZACION_A_UNA_PERSONA
	function insert()
		{
			// Convierte a variables los datos del Formulario asociado a la accion
			$oForm = $this->oModule->loadClass( 'Organizacion_persona_frm' );
			extract( $oForm->getFieldArray() );

			$this->oDatabase->beginTran();
			if ( $cNombre && $cApellido ) 
			{
				$ncPersona = $this->oDatabase->nextKey( "atPersona", "ncPersona",  $cFiltro  );
				$this->oDatabase->insert("atPersona",
									"cNombre", $cNombre,
									"cApellido", $cApellido,
									"ncVisibilidad", $ncVisibilidad,
									"ncGrupo", obtenerMiGrupo(),
									"ncUsuario", $this->oModule->oUserSession->getUser(),
									"dDesde", Date("Y-m-d") ,
									"dModificacion", Date("Y-m-d") ,
									"bBaja", 0,
									"ncPersona", $ncPersona );
				$oForm->aFields['ncPersona']->setValue( $ncPersona );
			}
			// Agrega el Registro
			$bOk = $this->oDatabase->insert("atOrganizacionPersona",
								"ncVisibilidad", $ncVisibilidad,
								"ncGrupo", obtenerMiGrupo(),
								"ncDomicilio", $ncDomicilio,
								"ncActividad", $ncActividad,
								"cCargo", $cCargo,
								"cInterno", $cInterno,
								"cOficina", $cPiso . "|" . $cDepto,
								"cDirecto", $cDirecto,
								"cCelular", $cCelular,
								"ncArea", $ncArea,
								"ncPersona", $ncPersona,
								"ncOrganizacion", $ncOrganizacion );
			// Agrega el Domicilio como laboral
			if ( $bOk  && $ncDomicilio )
			{
				$bOk = $this->oDatabase->insert("atPersonaDomicilio",
									"ncDomicilio", $ncDomicilio,
									"ncTipoDomicilio", DOMICILIO_LABORAL,
									"bLectura", 1,
									"dDesde", Date("Y-m-d"),
									"ncPersona", $ncPersona );
			}

			if ( $bOk  && $cEmail )
				{
					$oExe = $this->oModule->loadClass( 'Email_exe' );
					$oExe->insert();
				}

			if ( $bOk )	$this->oDatabase->commitTran();
			else			$this->oDatabase->rollBackTran();
		}

	// ELIMINAR_UNA_ORGANIZACION_DE_UNA_PERSONA
	function delete( $ncOrganizacion = '', $ncPersona = '')
		{
			if ( $ncPersona == '') $ncPersona = getParam('ncPersona');
			if ( $ncOrganizacion == '') $ncOrganizacion = getParam('ncOrganizacion');

			if ( $ncPersona && $ncOrganizacion )
			{
				$ncMiGrupo = obtenerMiGrupo();
				list( $ncGrupo, $ncVisibilidad ) = $this->oDatabase->getArray( "SELECT ncGrupo, ncVisibilidad FROM atOrganizacionPersona WHERE ncOrganizacion = $ncOrganizacion AND ncPersona = $ncPersona ");
				if ($ncVisibilidad == VISIBILIDAD_PUBLICO || $ncGrupo == $ncMiGrupo)
				{
					$this->oDatabase->beginTran();
					// Si tiene domicilio Laboral => lo quita
					$ncDomicilio = $this->oDatabase->getData("SELECT ncDomicilio FROM atOrganizacionPersona WHERE ncOrganizacion = $ncOrganizacion" );

					if ( $ncDomicilio ) $bOk = $this->oDatabase->delete( "atPersonaDomicilio", "ncPersona", $ncPersona, "ncDomicilio", $ncDomicilio );
					else $bOk = true;

					if ( $bOk ) $bOk = $this->oDatabase->delete( "atPersonaEmail", "ncPersona", $ncPersona, "ncOrganizacion", $ncOrganizacion );

					if ( $bOk ) $bOk = $this->oDatabase->delete( "atOrganizacionPersona", "ncPersona", $ncPersona, "ncOrganizacion", $ncOrganizacion );

					if ( $bOk )	$this->oDatabase->commitTran();
					else			$this->oDatabase->rollBackTran();
				} else
				{
					addMessage('No tiene permisos para eliminar los datos laborales');
				}
			}
		}
	}
?>
